//
//  MainViewController.swift
//  Weibo
//
//  Created by 潇 on 15/12/13.
//  Copyright © 2015年 潇. All rights reserved.
//

import UIKit


//command + shift + j 快速聚焦

//setValue 和 setObject 的区别
//KVC操作  字典操作
class MainViewController: UITabBarController {

    
    //设置全局属性
    let mainTabBar = MainTabBar()
    
    //composeBtn 的点击方法实现
    //private func 是 Swift中函数的特殊声明格式,希望 Swift 方法选择器+访问控制关键字能够兼容使用@objc
    //@objc private  要保证监听方法的安全性,并且可以响应点击事件的特殊写法
    @objc private func composeBtnDidClick() {
    
        //点击按钮实现的一系列事件
        print(__FUNCTION__)
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //注意: tabbar 是只读属性,不能直接设置,可以使用 KVC, 在运行时间接赋值
        
        //加号按钮的点击
        mainTabBar.composeBtn.addTarget(self, action: "composeBtnDidClick", forControlEvents: .TouchUpInside)
        //KVC
        setValue(mainTabBar, forKey: "tabBar")
        
        //classForCoder 对象的类的字符串形式
        //这里会先打印系统的 UITabBar 后打印自定义的 MainTabBar. 说明 KVC 动态的改变了
//        print(tabBar.classForCoder)//说明自定义后的 tabbar 被改变了
        
        //添加子视图控制器
        addChildViewControllers()
        
    }
    
    
    //private 受访问控制,防止外界调用  表示只能在本类中进行访问
    private func addChildViewControllers() {
        
//        let homeVC = HomeTableViewController()
//        let nav = UINavigationController(rootViewController: homeVC)
//        //设置标题
//        homeVC.title = "首页"
//        
//        //设置tabbar背景图
//        homeVC.tabBarItem.image = UIImage(named: "tabbar_home")
//        
//        //在 Swift 中 self 可以忽略,为了与闭包区分
//        addChildViewController(nav)
        
        addChildViewController(HomeTableViewController(), title: "首页", imageName: "tabbar_home")
        addChildViewController(MessageTableViewController(), title: "消息", imageName: "tabbar_message_center")
        addChildViewController(DidcoverTableViewController(), title: "发现", imageName: "tabbar_discover")
        addChildViewController(ProfileTableViewController(), title: "我", imageName: "tabbar_profile")
    }
    
    
    private func addChildViewController(vc: UIViewController,title: String, imageName: String) {
        
//        //设置tabbar 的背景色和文字颜色的第二种方法,可以一开始app 运行时就设置
//        self.tabBar.tintColor = themeColor
        
        //创建导航控制器
        let nav = BasNavViewController(rootViewController: vc)
        
        //设置标题
        vc.title = title
        
        //设置 tabbar 背景图
        vc.tabBarItem.image = UIImage(named: imageName)
        
//        //设置 tabbarItem 背景的颜色  使用拼接
//        vc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")?.imageWithRenderingMode(.AlwaysOriginal)
//        //设置字体的颜色
//        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: UIControlState.Selected)
        
        //添加
        addChildViewController(nav)
        
    }
}
